palavraReservada "fim-variáveis"|"algoritmo"|"variáveis"|"inteiro"|"real"|"caractere"|"literal"|"lógico"|"início"|"fim"|"ou"|"e"|"não"|"se"|"senão"|"então"|"fim-se"|"enquanto"|"faça"|"fim-enquanto"|"para"|"de"|"até"|"fim-para"|"matriz"|"inteiros"|"reais"|"caracteres"|"literais"|"lógicos"|"função"|"retorne"|"passo"
identificador [a-zA-Z][a-zA-Z0-9]*
inteiro	[0-9]
real	[0-9]"."[0-9]
caractere	"\'"[a-zA-Z0-9]"\'"
literal	"\""[a-zA-Z0-9]+"\""
logico "verdadeiro"|"falso"
operadorAritmetico	"+"|"-"|"/"|"*"|"%"|"++"|"--"
operadorRelacional	">"|">="|"<"|"<="|"="|"<>"
operadorLogico	"&&"|"||"|"!"|"ou"|"e"
simboloEspecial	"\""|"("|")"|"."|","|";"|":"|"{"|"}"|"#"|"\'"|"\\"
atribuicao ":="
%%
"//"[^\n]*	;/*comentario*/
{palavraReservada}	{printf("%s -> PALAVRA RESERVADA\n", yytext);}
{logico}	{printf("%s -> LOGICO\n", yytext);}
{identificador}	{printf("%s -> IDENTIFICADOR\n", yytext);}
{atribuicao}	{printf("%s -> ATRIBUICAO\n", yytext);}
{real}+	{printf("%s -> REAL\n", yytext);}
{inteiro}+	{printf("%s -> INTEIRO\n", yytext);}
{operadorAritmetico}	{printf("%s -> OPERADOR ARITMETICO\n", yytext);}
{operadorRelacional}	{printf("%s -> OPERADOR RELACIONAL\n", yytext);}
{simboloEspecial}	{printf("%s -> SIMBOLO ESPECIAL\n", yytext);}
{caractere}	{printf("%s -> CARACTERE\n", yytext);}
{caractere}+ {printf("%s -> LITERAL\n", yytext);}
[ \t\n]		; /* são ignorados */
[^ \t\n] {printf("%s -> DESCONHECIDO\n", yytext);}
%%
int main()
{
  printf("Insira dados:\n");
  yylex();

}

/* se definir esta função não necessita compilar com o parâmetro -lfl */
int yywrap()
{
	return(1);
}
